<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Monkey PHP Framework</title>
<link type="text/css" href="statics/css/base.css" rel="stylesheet" />
<script type="text/javascript" src="statics/js/jquery.min.js"></script>
<!--prettify-->
<link type="text/css" href="statics/css/prettify.css" rel="stylesheet" />
<script type="text/javascript" src="statics/js/prettify.js"></script>
<script type="text/javascript" src="statics/js/html5.js"></script>
<script type="text/javascript" src="statics/js/monkey.js"></script>
</head>

<body>
<!--page_wrap:start-->
<div class="page_wrap">

<p>
<h2>2.22  安全解决方案</h2>
<br />

<b>CSRF 跨站请求伪造解决方案：表单提交时使用 token 效验</b><br />

使用方法：<br />
1．使用 tokenMake($name)函数生成 token 值；<br />
2．将 token 值植入表单中；<br />
3．接收表单时使用 tokenCheck($name)函数验证 token 值。<br /><br />

<b>XSS 跨站脚本攻击解决方案：过滤浏览器输入的值</b><br />
使用方法：<br />
选择上节 \Library\Filter 类中的 xss####方法来过滤输入值：<br />
1．xssToText($data)，直接删除所有 html 和 php 标签，使得浏览器输入的内容只剩下文本，是最高级别的过滤；<br />
2．xssToHtml($data)，不是删除任何标签，但对标签进行彻底的编码，使得浏览器输入的内容按源码输出，是普通级别的过滤；<br />
3．xssDeleteScript($data)，有选择性的删除 javascript,iframes,object 等有害标签，使得其它内容能保留浏览器输入的 html 样式，是最弱的过滤级别；<br /><br />

<b>SQL 防注入解决方案：使用黑名单对字段值编码</b><br />
原理（详见数据驱动源码）：先用 360 的黑名单把危险代码选出来，对黑名单代码进行编码，最后读取数据时还原即可。 <br />
使用方法：<br />
1．该方案已经植入 MonkeyPHP 的数据驱动层了；<br />
2．开发者所要做的是使用数据驱动的 escape 方法即可。但只有混在sql字符串中的字段值需要应用escape方法，单独作为参数的字段值框架会自动使用 escape 编码， 不再需要开发者调用。<br />
3．还原编码框架已经自动处理了，不需要开发者手动处理。 <br /><br />


<b>目录遍历漏洞解决方案：不向浏览器输出后台目录变量</b><br />
MonkeyPHP 的目录部署分为两个部分<br />
1．www 目录，是 web 服务器指定浏览器可以访问的虚拟目录，这里仅仅存放静态资源文件和浏览器上传的文件。同时还要通过系统设置保证这个目录里的文件没有执行权。<br />
2．system 目录绝不能让浏览器有访问权限。<br />
浏览器中可以使用的目录变量有：<br />
__INDEX__    是 www 目录的浏览器访问位置，主要用于构造 URL<br />
__STATICS__  是 static 静态资源目录的浏览器访问位置，主要用于构造 URL<br /><br />

<b>DDOS 攻击解决方案：拦截浏览器恶意刷新</b><br />
MonkeyPHP 已经在框架类中内置了有效拦截防御 DDOS 的一个 PHP 代码。<br /><br />

<b>会话劫持解决方案：请使用 SSH 或 https 协议取代 http 协议</b>


</p>


</div>
<!--page_wrap:end-->
</body>
</html>